package com.lantosec.hmrp.modules.report.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lantosec.hmrp.core.kit.PageVO;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

public interface WindIndexMapper extends BaseMapper<Map> {
    /**
     * 门诊科室业务信息监控
     *
     * @param page
     * @param startTime
     * @param endTime
     * @param deptName
     * @param docName
     * @param dateState
     * @param deptState
     * @param docNameState
     * @return
     */
    PageVO<Map<String, Object>> getClinicDeptInfoMonitorList(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                             @Param("deptName") String deptName, @Param("docName") String docName, @Param("dateState") Integer dateState,
                                                             @Param("deptState") Integer deptState, @Param("docNameState") Integer docNameState);

    /**
     * 住院科室业务信息监控
     *
     * @param page
     * @param startTime
     * @param endTime
     * @param deptName
     * @param dateState
     * @param deptState
     * @return
     */
    PageVO<Map<String, Object>> getInnerDeptInfoMonitorList(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                            @Param("deptName") String deptName, @Param("dateState") Integer dateState, @Param("deptState") Integer deptState);

    /**
     * 药品费用排名
     * @param page
     * @param startTime
     * @param endTime
     * @param drugName
     * @param dateState
     * @param drugSate
     * @return
     */
    PageVO<Map<String, Object>> getReportDrugFeeRank(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                     @Param("drugName") String drugName, @Param("dateState") Integer dateState, @Param("drugSate") Integer drugSate);

    /**
     * 辅助药物排名
     * @param page
     * @param startTime
     * @param endTime
     * @param hisDeptName
     * @param doctorName
     * @param auxDrugName
     * @param dateState
     * @param hisDeptState
     * @param doctorState
     * @param auxDrugState
     * @return
     */
    PageVO<Map<String, Object>> getReportAuxDrugFeeRank(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                        @Param("hisDeptName") String hisDeptName, @Param("doctorName") String doctorName, @Param("auxDrugName") String auxDrugName,
                                                        @Param("dateState") Integer dateState, @Param("hisDeptState") Integer hisDeptState, @Param("doctorState") Integer doctorState,
                                                        @Param("auxDrugState") Integer auxDrugState);

    /**
     * 质子泵抑制剂医师费用排名
     * @param page
     * @param startTime
     * @param endTime
     * @param hisDeptName
     * @param doctorName
     * @param ppiName
     * @param dateState
     * @param hisDeptState
     * @param doctorState
     * @param ppiState
     * @return
     */
    PageVO<Map<String, Object>> getReportPpiFeeRank(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                    @Param("hisDeptName") String hisDeptName, @Param("doctorName") String doctorName, @Param("ppiName") String ppiName,
                                                    @Param("dateState") Integer dateState, @Param("hisDeptState") Integer hisDeptState, @Param("doctorState") Integer doctorState,
                                                    @Param("ppiState") Integer ppiState);

    /**
     * 医生药品费用排名
     * @param page
     * @param startTime
     * @param endTime
     * @param hisDeptName
     * @param doctorName
     * @param diagTreatType
     * @param dateState
     * @param hisDeptState
     * @param doctorState
     * @param diagTreatState
     * @return
     */
    PageVO<Map<String, Object>> getReportDoctorDrugFeeRank(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                           @Param("hisDeptName") String hisDeptName, @Param("doctorName") String doctorName, @Param("diagTreatType") String diagTreatType,
                                                           @Param("dateState") Integer dateState, @Param("hisDeptState") Integer hisDeptState, @Param("doctorState") Integer doctorState,
                                                           @Param("diagTreatState") Integer diagTreatState);

    /**
     * 门诊退费监控
     * @param page
     * @param startTime
     * @param endTime
     * @param hisDeptName
     * @param doctorName
     * @param patientName
     * @param itemType
     * @param refundItem
     * @param dateState
     * @param hisDeptState
     * @param doctorState
     * @param patientNameState
     * @param itemTypeState
     * @param handlerState
     * @param refundItemState
     * @return
     */
    PageVO<Map<String, Object>> getReportClinicRefundMonitor(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                             @Param("hisDeptName") String hisDeptName, @Param("doctorName") String doctorName, @Param("patientName") String patientName,
                                                             @Param("itemType") String itemType, @Param("refundItem") String refundItem, @Param("dateState") Integer dateState,
                                                             @Param("hisDeptState") Integer hisDeptState, @Param("doctorState") Integer doctorState, @Param("patientNameState") Integer patientNameState,
                                                             @Param("itemTypeState") Integer itemTypeState, @Param("handlerState") Integer handlerState, @Param("refundItemState") Integer refundItemState);

    /**
     * 医疗质量核心指标
     * @param page
     * @param startTime
     * @param endTime
     * @param hmrpDeptName
     * @return
     */
    PageVO<Map<String, Object>> getReportMedicalQualityCore(PageVO<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                            @Param("hmrpDeptName") String hmrpDeptName);
}
